home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / expanded.lha / expanded / hdr / Lap1.h < prev    next >
C/C++ Source or Header  |  1992-03-19  |  3KB  |  126 lines

  1. //
  2. // Linear-Affine-Projective Geometry Package
  3. //
  4. // Lap1.h
  5. //
  6. // $Header$
  7. //
  8. // William J.R. Longabaugh 
  9. // University of Washington
  10. //
  11. // Implementation of the linear-affine-projective geometry
  12. // package described in William J.R. Longabaugh, "An Expanded
  13. // System for Coordinate-Free Geometric Programming", Master's 
  14. // thesis, University of Washington, 1992.
  15. //
  16. // Copyright (c) 1992, William J.R. Longabaugh
  17. //   Copying, use and development for non-commercial purposes permitted.
  18. //   All rights for commercial use reserved.
  19. //   This software is unsupported and without warranty; it is
  20. //   provided "as is".
  21. //
  22. // ***********************************************************************
  23.  
  24. #ifndef Lap1_h
  25. #define Lap1_h
  26.  
  27. // Forward declarations of classes that are available to the user:
  28.  
  29. class Space;
  30. class VSpace;
  31. class ASpace;
  32. class PSpace;
  33. class SubSet;
  34. class VSubSet;
  35. class ASubSet;
  36. class PSubSet;
  37. class Basis;
  38. class Simplex;
  39. class Frame;
  40. class VBasis;
  41. class HFrame;
  42. class GeOb;
  43. class Vector;
  44. class APoint;
  45. class AVector;
  46. class VectorEC;
  47. class AVectorEC;
  48. class PPoint;
  49. class Map;
  50. class LinearMap;
  51. class AffineMap;
  52. class ProjectiveMap;
  53. class MultiMap;
  54. class MLM;
  55. class MAM;
  56. class AugScalar;
  57.  
  58. class GeObList;
  59. class ScalarList;
  60. class IntList;
  61. class BasisList;
  62. class SpaceList;
  63.  
  64. // Forward declarations of classes that are used to implement the
  65. // package.  They should not be used otherwise:
  66.  
  67. class SubSetInfo;
  68. class SpaceInfo;
  69.  
  70. class MultiIndex;
  71. class MITuple;
  72. class MMData;
  73.  
  74. // Object names are kept in buffers of this size:
  75.  
  76. const int MAX_NAMESIZE = 75;
  77.  
  78. // Error bound for equality of Scalars.  Use define, since CFRONT 1.2
  79. // allocates storage for "const Scalar EPSILON":
  80.  
  81. #define EPSILON (1.0E-6)
  82.  
  83. // Define various enumerated data types used by the system:
  84.  
  85. enum Infnum {INFINITY = -23457};
  86.  
  87. enum EnumSet {SPACETYPES, BASISTYPES, GEOBTYPES, MAPTYPES, MULTITYPES,
  88.           SUBSETTYPES, SRELTYPES};
  89.  
  90. // Define enumeration types for type fields:
  91.  
  92. enum SpaceType {NULL_SPACE, VEC_SPACE, AFF_SPACE, PROJ_SPACE, ANY_SPACE};
  93.  
  94. enum BasisType {NULL_BASIS, SIMPLEX, FRAME, VBASIS, HFRAME, ANY_BASIS};
  95.  
  96. enum GeObType {NULL_GEOB, VECTOR, AFF_POINT, AFF_VECTOR,
  97.            VEC_EC, AFF_VEC_EC, PROJ_POINT, ANY_GEOB};
  98.  
  99. enum MapType {NULL_MAP, LIN_MAP, AFF_MAP, PROJ_MAP, ANY_MAP};
  100.  
  101. enum MultiType {NULL_MULTI, MULTI_LINEAR, MULTI_AFFINE, ANY_MULTI};
  102.  
  103. enum SubSetType {NULL_SUBSET, LINEAR_SUBSET, AFFINE_SUBSET,
  104.          PROJECTIVE_SUBSET, ANY_SUBSET};
  105.  
  106. // Designations of spaces in 6-space sets:
  107.  
  108. enum SRel {LINEARIZATION, AFFINE, TANGENT, PROJECT_COMP,
  109.            LIN_DUAL, TANG_DUAL, NO_RELATION, SAME_SPACE};
  110.  
  111. // Types of Standard Euclidean Maps:
  112.  
  113. enum StdMaps {INNER_PROD, CROSS_PROD};
  114.  
  115. // Booleans:
  116.  
  117. enum Boolean {FALSE = 0, TRUE = 1};
  118.  
  119. // Scalars:
  120.  
  121. typedef double Scalar;
  122.  
  123. #endif
  124.  
  125.  
  126.